package io3;

import java.io.*;
import java.util.Scanner;

public class CopyFile {
    public static void main(String[] args) {
        /*使用DataInputStream和DataOutputStream实现从控制台中读入一个文件名，判断该文件是否存在。如果该文件存在，则在原文件相同
路径下创建一个文件名为“copy_原文件名”的新文件，该文件内容为原文件的拷贝。
例如：读入
D:/img/photo.jpg
则创建一个文件
D:/img/copy_photo.jpg
新文件内容和原文件内容相同。
*/
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个文件名：");
        String file = input.next();
        File f = new File(file);
        FileInputStream fis = null;
        DataInputStream dis = null;
        FileOutputStream fos = null;
        DataOutputStream dos = null;
        String deractory = file.substring(0,file.lastIndexOf("/"));//找出这个文件的目录
        int temp = -1;

        byte[] readData = new byte[1024];
        try {
            fis = new FileInputStream(file);
            dis = new DataInputStream(fis);
            fos = new FileOutputStream(deractory.concat("/copy_" + file.substring(file.lastIndexOf("/") + 1)));
            //建立一个copy文件复制过去
            dos = new DataOutputStream(fos);
            while ((temp = dis.read(readData)) != -1){//将文件的二进制数据传到内存
                dos.write(readData,0,temp);//将内存的数据立马写入到copy的文件中
                dos.flush();
               //一定不要忘记输出时要刷新缓冲区
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (dis != null) {
                try {
                    dis.close();
                    fis.close();
                    dis = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else if (dos != null) {
                try {
                    dos.close();
                    fos.close();
                    dos = null;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("文件转移成功！");

        }

}
